import axios from "axios"
import {ElMessage} from 'element-plus'
import {diffTokenTime} from "@/utils/auth"
import {user} from '@/store/app.js'
// 创建实例
const service = axios.create({
  // 给出开发和生产模式的baseURL
  baseURL: import.meta.env.VITE_BASE_API,
  timeout: 5000
})
// 请求拦截器
service.interceptors.request.use((config) => {
  // 判断token是否过期
  if (localStorage.getItem('token')) {
    // 如果token超过设定时间则返回登录页面
    if (diffTokenTime()) {
      // pinia实现返回登录页面
      const userStore = user()
      userStore.logout()
      return Promise.reject(new Error("token 失效了"))
    }
  }
  // 将localStorage中的token备份给请求头的Authorization属性
  config.headers.Authorization = localStorage.getItem('token')
  return config
}, error => {
  return Promise.reject(new Error(error))
})
// 响应拦截器
service.interceptors.response.use((response) => {
  // 解构出服务器带回来的数据
  const {data,code} = response.data
  // 如果code === 200，表示响应成功，将数据return出去
  if (code === 200) {
    return data
  } else {
    // 响应不成功，给出错误的信息
    ElMessage.error(data.msg)
    return Promise.reject(new Error(data.msg))
  }
}, error => {
  error.response && ElMessage.error(error.response.data)
  return Promise.reject(new Error(data.msg))
})

export default service